home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BCI NET
/
BCI NET Dec 94.iso
/
archives
/
telecomm
/
bbs
/
tbbs093.lha
/
Programmer
/
techprg.h
< prev
Wrap
C/C++ Source or Header
|
1994-09-09
|
8KB
|
293 lines
/* Structures and command IDs collected from TechPrg.guide */
/*
* Some typedefs so that we can avoid having to use the exec/types.h
* typenames
*/
typedef unsigned long ulong;
typedef unsigned short uword;
typedef unsigned char ubyte;
typedef void *obj; /* This is more useful in some other programs */
struct BBSMsg {
struct Message Msg; /* An exec message */
int SendingNode; /* The number of the node sending the message or
-1 if sent by a utility */
uword ID; /* The ID number of the command this message is
supposed to cause TechCon to perform */
obj result; /* The result field pointing to whatever result
data is returned by the call (if any) */
int Ret; /* Used by some calls for all kinds of stuff
(used to be a result field) */
obj data; /* Additional data for the command, whenever the
command requires any */
};
#define ID_BEGINMSGH 11
#define ID_ENDMSGH 12
#define ID_LOADMSG 13
#define ID_SAVEMSG 14
#define ID_UPDATEMSG 15
#define ID_GETMSGAREA 16
#define ID_GETFILEROOT 17
#define ID_UPDATEFILES 18
#define ID_LOADUSER 19
#define ID_SAVEUSER 20
#define ID_GETUSERPATH 21
#define ID_KILLUSER 22
#define ID_GETINDEX 23
#define ID_GETUSERNUM 26
#define ID_FREEDVEC 27
#define ID_INCOPENCOUNT 28
#define ID_DECOPENCOUNT 29
#define ID_GETNUMAREAS 30
#define ID_GETNUMNODES 31
#define ID_GETUSERNAME 37
#define ID_GETSIGS 43
#define ID_SETLOWMSG 44
#define ID_DELMSGFILE 45
#define ID_LOCKFILEROOT 46 /* TechCon 0.91+ */
#define ID_FREEFILEROOT 47 /* TechCon 0.91+ */
#define ID_MOVEFILE 48 /* TechCon 0.92+ */
struct SigDat { /* SIG configuration structure */
struct MinNode Node;
int SigNum;
char *Name;
int MinAcc;
int Mask;
struct MinList Areas; /* List of nodes with ln_Name fields pointing to
a struct AreaCfg */
};
struct FAreaCfg { /* File area configuration structure */
ubyte *Name;
int MinAcc;
int UpAcc;
int DownAcc;
int Mask;
int UpMask;
int DownMask;
struct MinList *FreeDL; /* List of nodes with ln_Name fields
pointing to a parsed pattern */
struct MinList *NoUpload; /* List of nodes with ln_Name fields
pointing to a parsed pattern */
ubyte *Redirect;
struct MinList *Misc; /* TechCon 0.91+ */
};
struct FidoNode { /* FidoNet address structure */
struct Node nd;
int Zone;
int Net;
int Node;
int Point;
};
struct AreaCfg { /* Message area configuration */
int AreaNr;
ubyte *Name;
int Type;
ulong LowMsg;
ulong HiMsg;
int MsgFile;
int MinAcc;
int ReadAcc;
int WriteAcc;
int RPAcc;
int Mask;
int ReadMask;
int WriteMask;
int RPMask;
ubyte *EchoTag;
ubyte *Origin;
ulong HiWater;
int NoImport;
struct MinList *ExportTo; /* List of struct FidoNodes */
struct MinList *Misc; /* List of nodes w/ ln_Name pointing to a
string */
struct FidoNode *AKA;
int nmdt; /* PRIVATE - don't touch */
long mdt; /* PRIVATE - don't touch */
long idx; /* PRIVATE - don't touch */
int mod; /* Set this if you change anything during a message handling
session */
};
struct BBSMsg { /* See info on TechCon private port for comments in
fields */
struct Message Msg;
int SendingNode;
uword ID;
void *result;
int Ret;
void *data;
int Node;
};
struct LoadedMsg { /* This is what LoadMsg() returns (for some reason) */
struct FMsg *msg;
ulong Length;
};
struct MsgReq { /* Used for lots of stuff */
int Area;
ulong MsgNum;
struct FMsg *bmsg;
ulong MsgLen;
ubyte *MText;
ubyte *ToUser;
};
struct FileMoveDat {
struct DirNode *sdir, *ddir;
struct FileNode *fncopy;
};
struct MsgId { /* A binary parsed version of a MSGID: or REPLY:
field */
uword Zone;
uword Net;
uword Node;
uword Point;
ulong ID;
};
struct IndexEntry { /* Message index */
ulong MsgNum;
uword FileNum;
uword OffSet;
ulong MsgLen;
struct MsgId MSGID;
struct MsgId REPLY;
};
#define MSG_PRIVATE 0x0001
#define MSG_LOCAL 0x0002 /* Stupid, I don't remember what this is for
(ignore it) */
#define MSG_RECEIVED 0x0004
#define MSG_SENT 0x0008 /* Has been sent (FidoNet) */
#define MSG_FILEATT 0x0010 /* Has a file attached */
#define MSG_KILLSENT 0x0020 /* On local, kill on receive (not useful) */
#define MSG_DEAD 0x0040 /* A dead message - Loading will fail */
struct MemMsg { /* Recommended format for message storage in memory */
ulong MsgNum;
ulong Original;
ulong FirstReply;
ulong PrevReply;
ulong NextReply;
uword Bits;
uword OrigZone;
uword OrigNet;
uword OrigNode;
uword OrigPoint;
uword DestZone;
uword DestNet;
uword DestNode;
uword DestPoint;
ubyte DateTime[20];
ubyte *AttFile;
ubyte *FromUser;
ubyte *ToUser;
ubyte *Subject;
ubyte *MsgText;
};
struct FMsg { /* Message format as found in .MDT files */
ulong MsgNum;
ulong Original;
ulong FirstReply;
ulong PrevReply;
ulong NextReply;
uword Bits;
uword OrigZone;
uword OrigNet;
uword OrigNode;
uword OrigPoint;
uword DestZone;
uword DestNet;
uword DestNode;
uword DestPoint;
ubyte DateTime[20];
/* Null terminated attached file name (full, w/path) */
/* Null terminated from */
/* Null terminated to */
/* Null terminated subject */
/* Null terminated message text */
};
struct FileNode { /* File structure */
struct Node Node;
ubyte *Name;
ubyte *Comment;
ulong Size;
ulong Prot;
ulong Days;
ulong Mins;
ulong Ticks;
ubyte *Uploader;
uword LongDesc;
ubyte **DescLines;
uword Number;
unsigned Free : 1;
};
struct DirNode { /* Directory structure */
struct Node Node;
ubyte *DirName;
struct MinList *flist; /* List of struct FileNodes */
struct MinList *dlist; /* List of struct DirNodes */
struct DirNode *Parent; /* This node can be found in Parent->dlist */
struct FAreaCfg *fc;
unsigned HasExt : 1;
};
struct UserVal { /* This is actually in the file like this */
uword Lines;
short Access;
long BytesLeft;
long FilesLeft;
ulong BytesDown;
ulong FilesDown;
ulong BytesUp;
ulong FilesUp;
uword ByteRatio;
uword FileRatio;
ulong Messages;
short TimeDay;
short TimeCall;
short TimeLeft;
short CallsDay;
short CallsLeft;
short TimeBank;
short MaxTimeBank;
ulong AvgCps;
ulong AvgCpsMul;
ulong Mask;
ulong TotalCalls;
ulong LastCall;
unsigned StripCols : 1;
unsigned SlowTerm : 1;
unsigned SimpleTerm : 1;
unsigned StripAll : 1;
};
struct BBSUser { /* User structure */
ubyte *Name;
ubyte *Password;
ubyte *CharSet;
ubyte *Extension;
ubyte *Locale; /* Used to be a locale, now a string file
(determines language, anyhow) */
ubyte *Protocol;
ulong *HighRead; /* Array of highread pointers */
ubyte *AMode; /* Array of 'S' or 'N' */
struct MinList Misc; /* A list of nodes with ln_Name ptr to string
containing misc definition for user */
int Number;
struct UserVal val;
};